/**
 * 埋点
 * @param {Object} config 配置信息
 * @param {Object} params 埋点相关参数信息
 * 
 */
 export default async function publicTrack(params) {
  console.log($global.shopInfo,'publicTrack')
  try {
      let data_post = {
          userId: $global.shopInfo.openId || '',    // 用户id
          event: params.event,                // 事件名称
          env: $global.config.trackEnv,               // 请求环境
          traceId: $global.config.traceId,            // 请求维度 id
          context: {
              device_type: ($global.systemInfo.platform == 'Android' ? 'Android' : 'iOS'),
              app_name: 'WildwoodMP',
              app_version: $global.config.trackVersion,
              library_name: 'segment-wildwoodmp',
              library_version: '1.0',
              referrer_type: 'member center'
          },
          properties: {
              eventName: params.event,                // 事件名称
              classification: 'experience',
              eventType: params.type || 'track',       // 埋点类型
              traceId: $global.config.traceId,        // 请求维度 id
              tmallShopId: $global.shopInfo.shopId,    // 店铺 id
              tier: 0,             // 用户等级
              userId: $global.shopInfo.openId || '',        // 用户 open_id 
              appkey: '32903603',                      // 小程序 appkey
              phoneModel: $global.systemInfo.model,    //'手机型号',
              tbVersion: $global.systemInfo.version,   //'淘宝版本',
              phoneSystem: $global.systemInfo.system,   //'系统版本',
              phonePlatform: $global.systemInfo.platform, //'系统名',
              phoneBrand: $global.systemInfo.brand,
              isBigWidget: 1,   //0 :小部件 1:大部件,
              userNick: $global.shopInfo.user_nick || '',    // 用户昵称
              openId: $global.shopInfo.openId || '',         // 用户 open_id,
              member_type: '',   //用户会员状态根据用户是否有新形象
              name: params.name,                         //screen 模块名称
              sort_order:params.sort_order,                //模块排序
          },
          anonymousId: $global.shopInfo.openId,       // 用户 open_id
          type: params.type || 'track',                 // 埋点类型
          name: params.name,                         //screen 模块名称
          sentAt: new Date().getTime(),             // 开始请求时间
          timestamp: new Date().getTime(),          // 请求时长
      }
      // ---> 检测是否存在自定义参数信息
      if (params.data) {
          data_post.properties = { ...data_post.properties, ...params.data }
      }
      let options = {
          data: data_post,
          url: '/home/track'
      }
      let info = await cloudApplication(options)
      console.log('publicTrack------', info, '-----', params.event, data_post)
  }
  catch (err) {
      console.log('-----> publicTrack-err: ', err)
  }
}



/**
* 公共方法 : 调用云应用
* @param {Object} obj 请求数据 
* @param {Object} data 请求数据 
* @param {String} url 请求数据 
* @param {Object} exts 请求数据 
* @param {Object} data 请求参数 
* 
* @returns 结果信息
*/
const cloudApplication = async function (options) {
  const { data = { mothed: 'post' }, url = '/home/track', exts = {} } = options;
  // console.log('=======data=======', data)
  // ---> 请求参数带上店铺 id 和 店铺 sellerId ： get 请求
  if (data.mothed == 'GET' && data.httUrl) {
      let tag = data.httUrl.indexOf('?') > -1 ? '&' : '?'
      data.httUrl = data.httUrl + tag + 'store=' + $global.shopInfo.shopId
      data.httUrl = data.httUrl + '&' + 'seller_id=' + $global.shopInfo.sellerId
      data.httUrl = data.httUrl + '&' + 'shop_id=' + $global.shopInfo.shopId
  }
  // ---> 请求参数带上店铺 id 和 店铺 sellerId ： post 请求
  if (data.parms) {
      data.parms.store = $global.shopInfo.shopId + ''
      data.parms.seller_id = $global.shopInfo.sellerId + ''
      data.parms.shop_id = $global.shopInfo.shopId + ''
  }
  // console.log('-----> cloudApplication - data: ', data)
  // ---> 请求结果

  return new Promise((resolve, reject) => {
      $global.cloud.application.httpRequest({
          'path': url,
          'method': 'POST',
          'headers': { "Content-Type": "application/json;charset=UTF-8" },
          'params': {},
          'body': JSON.stringify({ traceId: $global.config.traceId, ...data }),
          'exts': { "cloudAppId": $global.config.cloudAppId, "timeout": 10000, ...exts }
      }).then(res => {
          // console.log('------------',url)
          resolve(res)
      }).catch(err => {
          reject(err)
      })
  })
}

